package br.com.ninjacoders.modelo;

import br.com.ninjacoders.parse.AtributoColuna;
import br.com.ninjacoders.parse.ClasseTabela;
import br.com.ninjacoders.visao.RegistroNotas;

@ClasseTabela(nomeTabela=RegistroNotas.TABELA_NOTA)
public class Nota implements Entidade{
	
	public static final String ATRIBUTO_P1 = "p1";
	public static final String ATRIBUTO_P2 = "p2";
	public static final String ATRIBUTO_P3 = "p3";
	public static final String ATRIBUTO_DRE_ALUNO = "dreAluno";
	public static final String ATRIBUTO_NOME_TURMA = "nomeTurma";

	@AtributoColuna(nomeColuna=ATRIBUTO_ID)
	private String id;
	
	@AtributoColuna(nomeColuna=ATRIBUTO_P1)
	private Double p1;
	
	@AtributoColuna(nomeColuna=ATRIBUTO_P2)
	private Double p2;
	
	@AtributoColuna(nomeColuna=ATRIBUTO_P3)
	private Double p3;
	
	@AtributoColuna(nomeColuna=ATRIBUTO_DRE_ALUNO)
	private String dreAluno;
	
	@AtributoColuna(nomeColuna=ATRIBUTO_NOME_TURMA)
	private String nomeTurma;
	
	public Nota() {
	}
	
	public Nota(String id, String dreAluno, String nomeTurma){
		this.dreAluno = dreAluno;
		this.id = id;
		this.nomeTurma = nomeTurma;
	}
	
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getDreAluno() {
		return dreAluno;
	}

	public void setDreAluno(String dreAluno) {
		this.dreAluno = dreAluno;
	}

	public String getNomeTurma() {
		return nomeTurma;
	}

	public void setNomeTurma(String nomeTurma) {
		this.nomeTurma = nomeTurma;
	}

	public Double getP1() {
		return p1;
	}
	public void setP1(Double p1) {
		this.p1 = p1;
	}
	public Double getP2() {
		return p2;
	}
	public void setP2(Double p2) {
		this.p2 = p2;
	}
	public Double getP3() {
		return p3;
	}
	public void setP3(Double p3) {
		this.p3 = p3;
	}
	
	public Double media(){
		Double total = new Double(0);
		int n = 0;
		Double menor = Double.MAX_VALUE;
		
		if(this.p1 !=null){
			menor = p1;
			total += this.p1;
			n++;
		}
		if(this.p2 !=null){
			if(this.p2 < menor) menor = p2;
			total += this.p2;
			n++;
		}
		if(this.p3 !=null){
			if(this.p3 < menor) menor = p3;
			total += this.p3;
			n++;
		}
		
		if(n == 3)
			return (total-menor)/2;
		else if(n > 0)
			return total/n;
		else
			return null;
	}
}
